Справочник по конфигурации кластера¶
В этом разделе описаны опции конфигурации, представленные в Tarantool DB.
app.roles.slow_log¶
Секция app.roles.slow_log задает опции конфигурации журнала медленных запросов.
Пример
roles_cfg:
app.roles.slow_log:
enable: true
threshold: 3
namespaces:
- app
app.roles.slow_log.enable¶
Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.
Тип: boolean
Значение по умолчанию: false
app.roles.slow_log.threshold¶
Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.
Тип: number
Значение по умолчанию: 0.5
app.roles.slow_log.namespaces¶
Задать функции, для которых будет включено логирование медленных запросов.
Тип: table
Значение по умолчанию: {}
app.roles.tracing¶
Секция app.roles.tracing задает опции конфигурации трассировки.
Пример
roles_cfg:
app.roles.tracing:
enabled: true
global_sample_rate: 0
sample_rates:
get_token_api: 2
debug_1: 1
base_url: 'http://tracing:9411/api/v2/spans'
api_method: 'POST'
report_interval: 1
spans_limit: 1000
app.roles.tracing.global_sample_rate¶
Глобальный коэффициент частоты трассировки – трассируется каждый N-й вызов функции. Примеры:
10 – трассируется каждый десятый запрос;
1 – трассируются все запросы;
0 – все запросы не трассируются.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS, если функция start_span()
вызывается при каждом обращении к базе, установите значение global_sample_rate = 1000.
Тип: integer
Значение по умолчанию: 0
app.roles.tracing.sample_rates¶
Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции – это таблица из пар ключ-значение, где
ключ – название сегмента;
значение – частота трассировки для этого сегмента.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS у конкретной функции, в которой вызывается функция start_span() с названием get_user(),
установите в tracing.sample_rates ключ-значение {get_user: 1000}.
Тип: table
Значение по умолчанию: ‘{}’
Пример:
sample_rates:
get_user: 1000
get_token: 10000
app.roles.tracing.base_url¶
URL-адрес сервера трассировки, куда отправляются данные трассировки.
Тип: string
Значение по умолчанию: ‘http://127.0.0.1:9411/api/v2/spans’
app.roles.tracing.api_method¶
HTTP-метод, используемый для отправки данных трассировки на сервер.
Возможные значения: POST, GET, PUT.
Тип: string
Значение по умолчанию: ‘POST’
app.roles.tracing.report_interval¶
Интервал в секундах между отправкой на сервер собранных данных о трассировке.
Тип: integer
Значение по умолчанию: 10
app.roles.tracing.spans_limit¶
Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.
Тип: integer
Значение по умолчанию: 1000
config.storage¶
Секция config.storage определяет опции конфигурации узла как части централизованного хранилища конфигураций.
Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.
Пример
roles_cfg:
config.storage:
status_check_interval: 3
config.storage.status_check_interval¶
Интервал в секундах между проверками состояния сервера в кластере.
Тип: number
Значение по умолчанию: 5
roles.cooler¶
Доступно с версии 3.0.0.
Секция задает опции конфигурации для технологической роли roles.cooler. Опции используются для настройки архивации устаревших данных из спейсов memtx в спейсы на vinyl. Узнать больше: Архивация данных по их времени жизни.
-
roles.cooler.<name>.expirationd.<index_name>
roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index
roles.cooler.<name>.expirationd.<index_name>.full_scan_delay
roles.cooler.<name>.expirationd.<index_name>.iteration_delay
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success
roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor
Пример
roles_cfg:
roles.cooler:
user_sessions:
expirationd:
primary_key: # Явное указание сканирования по первичному ключу
full_scan_time: 300
tuples_per_iteration: 100
last_updated_index: # Дополнительный индекс
full_scan_time: 1000
tuples_per_iteration: 200
start_key: user_sessions_last_updated_start_key
iterator_type: 'LT'
Здесь:
user_sessions– название спейса memtx, для которого настраивается архивация;primary– название первичного ключа, по которому идет сканирование спейса;last_updated_index– название дополнительного индекса, по которому идет сканирование спейса;full_scan_time– время обхода спейса в секундах;tuples_per_iteration– количество кортежей, которое проверяется за одну итерацию;start_key– ключ, с которого начинается проход по индексу;iterator_type– тип итератора для обхода спейса.
Кроме того, в конфигурации можно задать уровень логирования модуля cooler с помощью опции log.modules.cooler:
log:
modules:
cooler: 'info'
Значение опции по умолчанию: info.
Возможные значения:
info– информация по запуску и завершению задачи архивации;verbose– информация по запуску и завершению задачи архивации, а также статистика по задаче и логирование всех новых параметров архивации. Уровеньverboseиспользуется, чтобы оценить работу архивации через логи;debug– информация по каждому архивируемому кортежу. Уровеньdebugиспользуется для отладки работы модуля, включать данный уровень надолго не рекомендуется.
Задать опцию log.modules.cooler можно на любом
уровне конфигурации:
на все экземпляры кластера, группу, набор реплик или отдельный экземпляр.
Полное описание опции log.modules приведено в документации Tarantool.
roles.cooler.<name>¶
Название спейса memtx, для которого настраивается архивация. Обязательный параметр.
Тип: string
roles.cooler.<name>.expirationd.<index_name>¶
Название индекса, по которому идет сканирование спейса.
На каждый индекс спейса может быть задана только одна задача архивации.
Настройка этой опции позволяет избежать лишнего прохода по первичному ключу, если используется другой, более подходящий
индекс (например, по last_updated или archived_at):
если секция
expirationd.\<index_name\>присутствует и содержит только вторичные индексы, идет сканирование только по этим индексам. Задача по первичному ключу при этом не запускается;если секция
expirationd.\<index_name\>пропущена, по умолчанию идет сканирование по первичному ключу;если требуется запуск по первичному ключу вместе с другими индексами или настройка параметров, необходимо явно указать секцию
expirationd.\<index_name\>с названием первичного ключа в конфигурации (см. пример выше).
Тип: string
roles.cooler.<name>.expirationd.<index_name>.force¶
Если задано значение false, модуль expirationd обрабатывает задачи для всех типов спейсов только на экземпляре,
доступном для записи.
Он не обрабатывает задачи для нелокальных персистентных спейсов на экземпляре только для чтения.
Это означает, что expirationd не будет запускать обработку задачи на реплике для обычных спейсов.
Если задано значение true, принудительно включается обработка такой задачи.
Тип: boolean
Значение по умолчанию: false
roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index¶
Если задано значение false, модуль expirationd возвращает ошибку при итерации по функциональному индексу,
поскольку это может привести к сбою.
Вы можете пропустить ошибку, установив значение true, например при реализации собственной функции iterate_with.
Тип: boolean
Значение по умолчанию: false
roles.cooler.<name>.expirationd.<index_name>.full_scan_delay¶
Время ожидания между полными сканированиями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1
roles.cooler.<name>.expirationd.<index_name>.full_scan_time¶
Время обхода спейса в секундах.
Используется для расчета пауз между итерациями.
Настройка регулирует скорость работы архивации данных.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 3600
roles.cooler.<name>.expirationd.<index_name>.iterate_with¶
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: string
roles.cooler.<name>.expirationd.<index_name>.iteration_delay¶
Максимальное время ожидания между итерациями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1
roles.cooler.<name>.expirationd.<index_name>.iterator_type¶
Тип итератора для обхода спейса:
строка или константа box.index, например, EQилиbox.index.EQ`.
Тип: string или number
Значение по умолчанию: box.index.ALL
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error¶
Имя функции, которая вызывается после завершения полного сканирования из-за ошибки.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success¶
Имя функции, которая вызывается после успешного завершения полной итерации сканирования.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.process_while¶
Имя функции, которая вызывается перед проверкой каждого кортежа.
Если функция возвращает false, задача останавливается до следующего полного сканирования.
По умолчанию используется функция, которая всегда возвращает true.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.start_key¶
Значение индекса кортежа, с которого начнется итерация.
Если тип итератора — EQ, выполняется итерация по кортежам с этим значением индекса.
Если параметр пропущен или равен нулю, будут проверены все кортежи.
Значение опции должно соответствовать одному из условий ниже:
значение имеет тот же тип данных, что и поле (или поля) индекса;
если в
start_keyпередана функция, она возвращает тот же тип данных, что и поле (или поля) индекса.
Если в start_key передана строка, она интерпретируется как имя функции.
Тип: string или table
roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration¶
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1024
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len¶
Предполагаемый размер спейса vinyl в первой итерации.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса.
Значение опции vinyl_assumed_space_len – это приблизительный размер спейса для первого запуска.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Смотрите также: roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor.
Тип: number
Значение по умолчанию: 10⁷
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor¶
Коэффициент для пересчёта размера спейса vinyl.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса.
vinyl_assumed_space_len – это приблизительное количество
для первого запуска, а значение опции vinyl_assumed_space_len_factor – для следующего этапа.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 2
roles.crud-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.crud-router и roles.crud-storage.
Опции используются для настройки сбора метрик модуля CRUD.
Узнать больше про роли, связанные с crud: roles.crud-router, roles.crud-storage.
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count
roles.crud-<router_or_storage>.stats_quantile_tolerated_error
Пример
roles_cfg:
roles.metrics-export:
http:
- endpoints:
- format: prometheus
path: /metrics
listen: 8081
groups:
routers:
replication:
failover: manual
sharding:
roles: [router]
roles:
- roles.crud-router
- roles.metrics-export
- roles.dictionary-router
roles_cfg:
roles.crud-router:
stats: true
stats_driver: metrics
stats_quantiles: true
stats_quantile_tolerated_error: 0.001
stats_quantile_age_buckets_count: 5
stats_quantile_max_age_time: 180
roles.crud-<router_or_storage>.stats¶
Включить сбор метрик модуля CRUD.
По умолчанию сбор метрик отключен, так как их работа снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию;
до 20% – при использовании метрик, которые содержат квантили.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_driver¶
Задать драйвер для хранения собранных метрик CRUD. Возможные значения:
local– использовать локальный драйвер;metrics– использовать драйвер метрик.
Тип: string
Значение по умолчанию: ‘metrics’
Примечание
Включенный сбор метрик CRUD снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию.
roles.crud-<router_or_storage>.stats_quantiles¶
Включить квантили метрик.
Опция crud.stats_quantiles работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Примечание
Вычисление квантилей снижает производительность на величину до 10%.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count¶
Количество сегментов квантилей summary.
Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU.
Опция crud.stats_quantile_age_buckets_count работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Тип: number
Значение по умолчанию: 2
roles.crud-<router_or_storage>.stats_quantile_max_age_time¶
Время жизни сегмента (bucket) в секундах.
Опция crud.stats_quantile_max_age_time работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом
больше ресурсов CPU используется на ротацию сегментов.
Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan в значениях квантилей.
Узнать больше про опцию crud.stats_quantile_max_age_time можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 60
roles.crud-<router_or_storage>.stats_quantile_tolerated_error¶
Задать допустимую погрешность квантиля.
Опция stats_quantile_tolerated_error работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Узнать больше про опцию crud.stats_quantile_tolerated_error можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 0.001
roles.dictionary-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.dictionary-router и roles.dictionary-storage.
Опции используются для настройки работы словарей.
Пример
roles_cfg:
roles.dictionary-router:
update_instances_list_period: 300
roles.dictionary-storage:
batch_size: 1000
worker_sleep_in_second: 60
update_instances_list_period: 300
connect_timeout: 3
roles.dictionary-<router_or_storage>.batch_size¶
Размер пакета для обмена между узлами в байтах.
Тип: number
Значение по умолчанию: 400
roles.dictionary-<router_or_storage>.worker_sleep_in_second¶
Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.
Тип: number
Значение по умолчанию: 3
roles.dictionary-<router_or_storage>.update_instances_list_period¶
Доступно с версии 2.0.0.
Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.
Тип: number
Значение по умолчанию: 60
roles.dictionary-<router_or_storage>.connect_timeout¶
Доступно с версии 2.0.0.
Время ожидания установки соединения в секундах.
Тип: number
Значение по умолчанию: Неограниченно
roles.expirationd¶
Секция roles.expirationd задает опции конфигурации устаревания данных.
roles.expirationd.<name>¶
Название задачи по устареванию данных. Обязательный параметр.
Тип: string
Примеры конфигурации¶
Без пользовательской логики
roles_cfg:
roles.expirationd:
task_name1:
space: messages
options:
args:
lifetime_in_seconds: 15
time_create_field: dt
Здесь:
task_name1– название задачи по устареванию данных;space– название спейса, по которому идет поиск устаревших кортежей;options.args– дополнительные опции конфигурации:lifetime_in_seconds– время жизни кортежа в секундах;time_create_field– название поля, по которому проверяется время жизни кортежа.
Узнать больше: Автоматическое удаление устаревших кортежей из спейса.
С пользовательской логикой
roles_cfg:
roles.expirationd:
messages_expiration:
space: messages
is_expired: messages_is_tuple_expired
is_master_only: true
options:
tuples_per_iteration: 100
iterate_with: messages_iterate_with
process_expired_tuple: messages_process_expired_tuple
args:
seconds: 5
Здесь:
messages_expiration– название задачи по устареванию данных;space– название спейса, по которому идет поиск устаревших кортежей;is_expired– название функции, которая получает кортеж и проверяет его срок жизни;is_master_only– экспирация запущена только на master-узлах;options– дополнительные опции конфигурации:tuples_per_iteration– количество кортежей, которое проверяется за одну итерацию;iterate_with– название функции, которая получает и обрабатывает устаревшие кортежи;process_expired_tuple– название функции, возвращающей итератор для обхода спейса;args– аргументы, доступные в функцияхmessage_iterate_withиmessage_process_expired_tuple,seconds– время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:lifetime_in_seconds- время жизни кортежа в секундах;time_create_field- поле “время создания” для оценки времени жизни.
Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.
roles.expirationd.<name>.is_expired¶
Название функции, которая получает кортеж и проверяет его срок жизни.
Функция возвращает true, если время жизни кортежа истекло.
Обязательный параметр.
Тип: function
roles.expirationd.<name>.is_master_only¶
Запустить работу с устаревающими кортежами только на master-узлах.
Тип: boolean
Значение по умолчанию: false
roles.expirationd.<name>.space¶
Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.
Тип: string или number
roles.expirationd.<name>.options¶
Дополнительные опции конфигурации.
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.args¶
Дополнительные аргументы конфигурации. Доступные аргументы:
seconds(number) – время жизни кортежа в секундах. Аргумент нужен, когда для обработки устаревших кортежей используются пользовательские функции. Аргумент передается в опции roles.expirationd.<name>.options.iterate_with и roles.expirationd.<name>.options.process_expired_tuple в качестве дополнительного контекста;lifetime_in_seconds(number) – время жизни кортежа в секундах. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей;time_create_field(string) – название поля, по которому проверяется время жизни кортежа. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей. Указанное поле может быть нескольких типов. Функция определения текущего времени зависит от типа данных в опцииtime_create_field:
Тип |
Текущее время |
|---|---|
число |
|
целое число |
|
беззнаковое |
|
datetime |
|
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.iterate_with¶
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: function
roles.expirationd.<name>.options.process_expired_tuple¶
Название функции, которая получает и обрабатывает устаревшие кортежи.
Если опция не указана (или указан nil), устаревшие кортежи удаляются.
Тип: function
roles.expirationd.<name>.options.tuples_per_iteration¶
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1024
roles.healthcheck¶
Доступно с версии 3.1.0.
Секция roles.healthcheck задает опции для технологической роли roles.healthcheck.
Опции позволяют настраивать запуск встроенных проверок здоровья кластера и репликации, а также задавать пользовательские
проверки работоспособности.
Список доступных встроенных проверок приведен в секции roles.healthcheck.checks.
Узнать больше: Проверка работоспособности кластера.
Для получения состояния здоровья узла используются HTTP GET-запросы на адрес обработчика запроса, заданный в конфигурации:
curl http://localhost:8081/healthcheck
Запрос возвращает один из следующих HTTP-статусов:
200с телом ответа{"status":"alive"}– все проверки завершены успешно;500– не удалось успешно выполнить часть проверок, описание проблем приведено в полеdetails.
roles.healthcheck.checks¶
Включить или отключить запуск встроенных и пользовательских проверок.
Пользовательские проверки по умолчанию включены, для исключения из списка запускаемых укажите их в опции checks.exclude.
Поддерживаемые параметры:
include– список запускаемых проверок. Тип:table. Если установлено значение по умолчанию (all), запускаются все доступные проверки (основные, дополнительные и пользовательские);exclude– список отключенных встроенных и пользовательских проверок. Тип:table. Если установлено значение по умолчанию ({}), запускаются все доступные проверки. При наличии одних и тех же проверок в опцияхchecks.includeиchecks.excludeприоритетное значение имеют проверки в опцииchecks.exclude.
Поддерживаемые встроенные проверки:
check_box_info_status– текущее состояние экземпляра. Проверка провалится, еслиbox.info.statusимеет статус, отличный отrunning;check_snapshot_dir– наличие директории для снимков данныхsnapshot.dirс учетом значенияprocess.work_dir. Проверка провалится, если директорияsnapshot.dirотсутствует или недоступна;check_wal_dir– наличие директории журнала упреждающей записиwal.dirс учетом значенияprocess.work_dir. Проверка провалится, если директорияwal.dirотсутствует или недоступна;replication.upstream_absent– дополнительная проверка, наличиеupstream-узла, с которого принимаются данные. Проверка провалится, еслиupstream-узел отсутствует и не выполняется репликация сupstream-узла на текущий экземпляр;replication.state_bad– дополнительная проверка, репликационный статус текущего экземпляра (значениеbox.info.replication[{n}].upstream.status). Здоровым состоянием считаются только статусыfollowилиsync. Проверка провалится, если полученный статус отличается отfollowилиsync.
Дополнительные проверки репликации replication.upstream_absent.<имя_узла> и replication.state_bad.<имя_узла> запускаются по умолчанию,
настроить это можно в секциях checks.include и checks.exclude.
Пример
Запустить все проверки кроме replication.upstream_absent и replication.state_bad:
roles_cfg:
roles.healthcheck:
checks:
include: [all]
exclude: ['replication.upstream_absent', 'replication.state_bad']
http:
- endpoints:
- path: /healthcheck
Пример пользовательской проверки
Любая функция box.func с именем healthcheck.check_* выполняется, если она не исключена через checks.exclude.
Если пользовательская проверка выдает ошибку или возвращает не булевое значение в качестве результата , проверка
прекращает проход по оставшимся пользовательским проверкам.
Такой подход с быстрым обнаружением ошибок позволяет увидеть нерабочие проверки, чтобы оперативно исправить их или отключить.
В примере ниже создана проверка healthcheck.check_space_size, отслеживающая размер заданного спейса.
Если размер превышает пороговое значение, проверка возвращает ошибку:
-- migration or role code
box.schema.func.create('healthcheck.check_space_size', {
if_not_exists = true,
language = 'LUA',
body = [[
function()
local limit = 10 * 1024 * 1024
local used = box.space.my_space:bsize()
if used > limit then
return false, 'my_space is larger than 10MB'
end
return true
end
]]
})
Чтобы отключить пользовательскую проверку, укажите ее в опции checks.exclude:
roles_cfg:
roles.healthcheck:
checks:
exclude:
- healthcheck.check_space_size
http:
- endpoints:
- path: /healthcheck
roles.healthcheck.http¶
Параметры HTTP-сервера. При минимальной конфигурации модуля выполняются только встроенные проверки работоспособности Tarantool.
Поддерживаемые параметры:
server– название именованного HTTP-сервера из конфигурации технологической ролиroles.httpd. Тип:stringЕсли параметр не указан, используется серверdefault;endpoints– массив адресов с возможностью указания нескольких подключений. Тип:table. Возможные параметры:path– адрес обработчика запроса (endpoint). Обязательный параметр. Тип:string;format– формат, в котором предоставляется ответ. Тип:string. Опция поддерживает создание пользовательского формата ответа, подробности приведены в разделе Пример пользовательского формата ответа.
Примеры
Для корректной работы технологической роли roles.healthcheck нужно задать настройки HTTP-сервера в конфигурации роли roles.httpd.
Для этого укажите обе роли в секции roles:
#...
groups:
routers:
#...
roles: [ roles.httpd, roles.healthcheck ]
Затем определите конфигурацию сервера в секции roles_cfg.roles.httpd.
Минимальная конфигурация при этом выглядит так:
roles_cfg:
roles.healthcheck:
http:
- endpoints:
- path: /healthcheck
groups:
group-001:
replicasets:
router:
instances:
router:
roles: [roles.httpd, roles.healthcheck]
roles_cfg:
roles.httpd:
default:
listen: '127.0.0.1:8081'
Здесь:
roles.healthcheck.http.endpoints.path– адрес обработчика запроса на работоспособность (endpoint);roles.httpd.default.listen– адрес и порт, на которых запущен HTTP-сервер. Технологическая рольroles.healthcheckиспользует общий HTTP-сервер, настроенный в конфигурацииroles.httpd.
Использование именованного сервера:
roles_cfg:
roles.httpd:
default:
listen: '127.0.0.1:8081'
additional:
listen: '127.0.0.1:8082'
roles.healthcheck:
http:
- server: additional
endpoints:
- path: /healthcheck
Здесь:
roles.httpd.additional.listen– адрес и порт, на которых запущен HTTP-сервер. Технологическая рольroles.healthcheckиспользует общий именованный HTTP-сервер, настроенный в конфигурацииroles.httpd;roles.healthcheck.http.server– именованный HTTP-сервер из конфигурацииroles.httpd;roles.healthcheck.http.endpoints.path– адрес обработчика запроса на работоспособность (endpoint).
Пример пользовательского формата ответа
Для создания пользовательского формата ответа задайте функцию форматирования, которая возвращает ответ в формате
{status=<number>, headers=?, body=?}.
В примере ниже создана функция healthcheck.check_space_size, которая задает пользовательский формат ответа.
Указанный формат возвращает один из следующих ответов:
HTTP-статус
200– проверки завершены успешно;HTTP-статус
560– не удалось успешно выполнить часть проверок, описание проблем приведено в полеdetails.
box.schema.func.create('custom_healthcheck_format', {
language = 'LUA',
body = [[
function(is_healthy, details)
local json = require('json')
if is_healthy then
return { status = 200, body = json.encode({ok=true}) }
end
return {
status = 560,
headers = {['content-type'] = 'application/json'},
body = json.encode({errors = details}),
}
end
]]
})
Чтобы использовать пользовательский формат ответа, укажите название созданной функции в опции roles.healthcheck.http.endpoints.format:
roles_cfg:
roles.healthcheck:
http:
- endpoints:
- path: /healthcheck
format: custom_healthcheck_format
roles.healthcheck.ratelim_rps¶
Количество запросов в секунду с одного узла. Например, значение 1 означает один запрос в секунду, 0.2 – пять запросов в секунду.
Значение null, заданное по умолчанию, отключает ограничение количества запросов.
При превышении ограничения запрос возвращает ответ 429 с телом ответа {"status":"rate limit exceeded"}.
Note
Примечание
Рекомендуемое значение параметра составляет не более 5 запросов в секунду. Большее количество запросов может влиять на производительность экземпляра.
Тип: number
Значение по умолчанию: box.NULL
roles.healthcheck.set_alerts¶
Включить отображение неудачных попыток проверки работоспособности в виде оповещений (alerts).
Название оповещения – это название функции box.func или checks. Описание оповещения содержит сообщение об ошибке из такой функции.
Список оповещений можно просмотреть двумя способами:
в поле
box.info.config.alerts(смотрите метод config.info() в документации платформы Tarantool;в веб-интерфейсе TCM.
Тип: boolean
Значение по умолчанию: false
roles.tcf-<worker_or_coordinator>¶
Секция задает опции конфигурации для технологических ролей roles.tcf-worker и roles.tcf-coordinator.
Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF).
Полный список опций приведен в документации TCF.
Задать конфигурацию кластера можно как через yaml-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.
Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.